package proyecto.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import proyecto.excepcion.DAOExcepcion;
import proyecto.excepcion.LoginExcepcion;
import proyecto.modelo.Laboratorista;

public class LaboratoristaDAOImpl extends BaseDAO implements LaboratoristaDAO {

    private DataSource dataSource;

    public DataSource getDataSource() {
        return dataSource;
    }

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public Laboratorista validar(String login, String password) throws DAOExcepcion, LoginExcepcion {
        System.out.println("-------------------LaboratoristaDAOImpl: validar: login: " + login + ", Pass: " + password);
        String query = "SELECT * FROM tb_medico where login=? and password=?";
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        Laboratorista vo = new Laboratorista();
        try {
            con = dataSource.getConnection();
            stmt = con.prepareStatement(query);
            stmt.setString(1, login);
            stmt.setString(2, password);
            rs = stmt.executeQuery();

            if (rs.next()) {
                System.out.println("SI EXISTEEEEE!");
                vo.setId_medico(Integer.parseInt(rs.getString("id_medico")));
                vo.setNombres(rs.getString("nombres"));
                vo.setApellidos(rs.getString("apellidos"));
                vo.setFec_nacimiento(rs.getString("fec_nacimiento"));
                vo.setFec_registro(rs.getString("fec_registro"));
                vo.setTelefono(rs.getString("telefono"));
                vo.setNumero_documento(rs.getString("numero_documento"));
                vo.setTipo_documento(rs.getString("tipo_documento"));
                vo.setLogin(rs.getString("login"));
                vo.setPassword(rs.getString("password"));
            } else {
                throw new LoginExcepcion("No existe");
            }
        } catch (LoginExcepcion e) {
            System.err.println(e.getMessage());
            throw e;
        } catch (SQLException e) {
            System.err.println(e.getMessage());
            throw new DAOExcepcion(e.getMessage());
        } finally {
            this.cerrarResultSet(rs);
            this.cerrarStatement(stmt);
            this.cerrarConexion(con);
        }
        return vo;
    }
}

